package bean;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.Date;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.servlet.http.HttpServletRequest;

import DAO.MensagemDAO;
import Model.Mensagem;
import Model.Usuario;

public class MensagemBean {
	private int idMensagem;
	private int cdStatus;
	private int idTipoMensagem;
	private Date dataEmissao;
	private String mensagem;			
	private String titulo;	 
	private int idUsuario;
	private ArrayList<String> idDestinatarios;
	
	
	public String getMensagem() {
		return mensagem;
	}
	public void setMensagem(String mensagem) {
		this.mensagem = mensagem;
	}
	public int getIdMensagem() {
		return idMensagem;
	}
	public void setId(int id) {
		this.idMensagem = id;
	}
	public String getTitulo() {
		return titulo;
	}
	public void setTitulo(String titulo) {
		this.titulo = titulo;
	}	
	
	public int getIdUsuario() {
		return idUsuario;
	}
	public void setIdUsuario(int idUsuario) {
		this.idUsuario = idUsuario;
	}
	
	/**
	 * @return the cdStatus
	 */
	public int getCdStatus() {
		return cdStatus;
	}
	/**
	 * @param cdStatus the cdStatus to set
	 */
	public void setCdStatus(int cdStatus) {
		this.cdStatus = cdStatus;
	}
	/**
	 * @return the idTipoMensagem
	 */
	public int getIdTipoMensagem() {
		return idTipoMensagem;
	}
	/**
	 * @param idTipoMensagem the idTipoMensagem to set
	 */
	public void setIdTipoMensagem(int idTipoMensagem) {
		this.idTipoMensagem = idTipoMensagem;
	}
	/**
	 * @return the dataEmissao
	 */
	public Date getDataEmissao() {
		return dataEmissao;
	}
	/**
	 * @param dataEmissao the dataEmissao to set
	 */
	public void setDataEmissao(Date dataEmissao) {
		this.dataEmissao = dataEmissao;
	}
	/**
	 * @return the idDestinatarios
	 */
	public ArrayList<String> getIdDestinatarios() {
		return idDestinatarios;
	}
	/**
	 * @param idDestinatarios the idDestinatarios to set
	 */
	public void setIdDestinatarios(ArrayList<String> idDestinatarios) {
		this.idDestinatarios = idDestinatarios;
	}
	/**
	 * @param idMensagem the idMensagem to set
	 */
	public void setIdMensagem(int idMensagem) {
		this.idMensagem = idMensagem;
	}
	
	public String Salvar()
	{
		Usuario objUsuario = (Usuario) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("currentUser");
		Mensagem mensagem = new Mensagem();		
		mensagem.setTituloMensagem(this.titulo);
		mensagem.setCdStatus(1);
		mensagem.setIdTipoMensagem(this.idTipoMensagem);
		mensagem.setTextoMensagem(this.mensagem);
		mensagem.setIdusuario(objUsuario.getIdUsuario());	
		
		try
		{
			MensagemDAO.Insert(mensagem, this.idDestinatarios);			
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("sucesso", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Informações Salvas com sucesso"));			
		}
		catch(SQLException ex)
		{
			ex.printStackTrace();
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("erro", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", "Ocorreu um problema ao salvar as informações, contate o administrador do sistema"));
		}
		
		return "mantermensagem_list";		
	}	
	
	public String InativarMensagemEnviada()
	{
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		int id_mensagem = Integer.parseInt(request.getParameter("idmensagem"));
		
		try
		{
			MensagemDAO.InativarMensagemEnviada(id_mensagem);
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("sucesso", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Informações Deletadas com sucesso"));

		}
		catch(SQLException sqlex)		
		{
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("erro", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", "Ocorreu um problema ao salvar as informações, contate o administrador do sistema"));
		}		
		
		return "mantermensagem_list";
	}
	
	public String InativarMensagemRecebida()
	{
		HttpServletRequest request = (HttpServletRequest) FacesContext.getCurrentInstance().getExternalContext().getRequest();
		int id_mensagem = Integer.parseInt(request.getParameter("idmensagem"));
		
		try
		{
			MensagemDAO.InativarMensagemRecebida(id_mensagem);
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("sucesso", new FacesMessage(FacesMessage.SEVERITY_INFO, "Sucesso!", "Informações Deletadas com sucesso"));
			
		}
		catch(SQLException sqlex)		
		{
			FacesContext facesContext = FacesContext.getCurrentInstance();
			facesContext.addMessage("erro", new FacesMessage(FacesMessage.SEVERITY_ERROR, "Erro!", "Ocorreu um problema ao salvar as informações, contate o administrador do sistema"));
		}		
		
		return "mantermensagem_list";
	}	
}
